package com.mazegame.backend;

import javafx.animation.FadeTransition;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;

import java.util.HashMap;
import java.util.Map;

// 故事场景管理器类
public  class StorySceneManager {
    private StackPane root;
    private Map<String, Node> scenes;
    private static String currentSceneId;

    public StorySceneManager() {
        root = new StackPane();
        scenes = new HashMap<>();
        currentSceneId = null;
    }

    public StackPane getRoot() {
        return root;
    }

    public void addScene(String name, Node scene) {
        scenes.put(name, scene);
    }

    public void showScene(String name) {
        Node scene = scenes.get(name);
//        if (scene != null) {
//            // 使用淡入淡出动画切换场景
//            if (!root.getChildren().isEmpty()) {
//                FadeTransition fadeOut = new FadeTransition(Duration.millis(500), root.getChildren().get(0));
//                fadeOut.setFromValue(1.0);
//                fadeOut.setToValue(0.0);
//                fadeOut.setOnFinished(e -> {
//                    root.getChildren().clear();
//                    root.getChildren().add(scene);
//                    FadeTransition fadeIn = new FadeTransition(Duration.millis(500), scene);
//                    fadeIn.setFromValue(0.0);
//                    fadeIn.setToValue(1.0);
//                    fadeIn.play();
//                });
//                fadeOut.play();
//            } else {
//                root.getChildren().add(scene);
//                scene.setOpacity(0.0);
//                FadeTransition fadeIn = new FadeTransition(Duration.millis(500), scene);
//                fadeIn.setFromValue(0.0);
//                fadeIn.setToValue(1.0);
//                fadeIn.play();
//            }
//        }
        if (scene != null) {
            // 更新当前场景 ID
            currentSceneId = name;

            // 直接切换场景，不使用动画
            if (!root.getChildren().isEmpty()) {
                root.getChildren().clear();  // 清除当前场景
            }
            root.getChildren().add(scene);  // 添加新场景
        }
    }

    public static String getCurrentSceneId() {
        return currentSceneId;
    }
}